home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / linux-bo / etherboo.000 / etherboo / etherboot-2.0 / README < prev    next >
Text File  |  1996-06-08  |  12KB  |  239 lines

  1. This is the README file for the etherboot package. Please note that I
  2. (ken@syd.dit.csiro.au) have contributed the most recent changes to this
  3. package; therefore bug reports and enquiries will most likely be
  4. handled by me. Nevertheless, you might be asking a question that Markus
  5. (gutschk@math.uni-muenster.de) wants to answer, so please send a carbon
  6. copy of your e-mail message to him.
  7.  
  8. Binaries are supplied in binaries/ but I recommend you build your own
  9. images because they may not probe the card at the address where you
  10. have installed it. Future work here. See the Makefiles for details.
  11.  
  12. There are two directories for building: netboot-32 and netboot-16.  You
  13. probably want netboot-32. See netboot-16 for more information on that.
  14. You should be able to say make in each one.
  15.  
  16. See the file LOG for a description of changes.
  17.  
  18. See the file HINTS for things to watch out for.
  19.  
  20. The files in patches are not really needed since I have supplied
  21. everthing prepatched, but are included so you can see what has changed.
  22. They might also be useful for converting future drivers from the FreeBSD
  23. project.
  24.  
  25. The patch to the Linux kernel mentioned by Markus may not be valid for
  26. your version of the kernel; it appears that current development kernels
  27. already have the facility to mount the root filesystem by NFS. You
  28. should check this yourself and not blindly apply the patch.
  29.  
  30. Markus adds: My 1.3.x patches are probably broken w.r.t. to swapping
  31. via NFS. It appears that 1.3.x introduced major changes that make
  32. network based swapping impossible. For the time being, it is advised
  33. that people either swap locally or use a 1.2.x kernel.
  34.  
  35. The bit about RARP near the end of Markus's comments can be avoided if
  36. the necessary addresses are available to the booting kernel via the
  37. config file.
  38.  
  39. The boot code from FreeBSD is under the BSD license, while the Linux and
  40. netboot-linux stuff is under the GPL. This is not a problem really: the
  41. GPL states that mere aggregation another work with a GPL'ed work on a
  42. storage medium, e.g. an archive file, does not put the other work under
  43. the GPL.
  44.  
  45. Ken (ken@syd.dit.csiro.au)
  46.  
  47. Here is the original README by Markus Gutschke:
  48.  
  49. Currently there seem to be two different packages for installing a
  50. disk-less PC-based UNIX station.
  51.  
  52. 1) On sunsite in pub/linux/system/Linux-boot/netboot-nfs.tar.gz is a
  53.    package that contains code for patching a 1.2.x Linux kernel to
  54.    boot from an NFS mounted file-system and to accept an NFS mounted
  55.    swap file. This package also comes with code for making your own
  56.    BOOT-prom. Unfortunately, the BOOT-prom code suffers from two major
  57.    drawbacks.
  58.     a) Currently, only Western Digital and SMC Ethernet cards are
  59.        supported.
  60.     b) You need to have a DOS based 16bit C compiler and assembly code
  61.        development system for making the BOOT-prom images.
  62.    (for your convenience, the original kernel patches from this package
  63.     are found in the directory `netboot-linux'; please copy the entire
  64.     package from sunsite, if you need more information on it. I did
  65.     not write any of the files in this directory, so please refer to
  66.     the respective copyright information in that directory)
  67.  
  68. 2) FreeBSD comes with its own code for booting disk-less UNIX
  69.    PC's. This code supports a wide variety of popular Ethernet cards
  70.    (Western Digital, SMC, NE1000, NE2000, 3COM 3c503, 3COM 3c509).
  71.    Actually, the code does auto-detection, so you can even have one
  72.    BOOT-prom image for different cards (although, EPROM size is a limiting
  73.    factor; if you want to support all different cards with the same
  74.    BOOT-prom image you will probably have to remove some of the more
  75.    advanced features of the code). Besides, the code can be compiled
  76.    in an 32bit environment, using standard GCC.
  77.    Obviously, this package does not directly support Linux.
  78.     a) FreeBSD uses a different kind of Makefile, thus Linux/GNUmake
  79.        do not know what to do with this code. (I have been told, that
  80.        there is a `pmake' for Linux now; I did not know about this
  81.        when I ported the code, so I had to convert the Makefile manually)
  82.     b) The package assumes that GCC outputs FreeBSD-style aout-files.
  83.     c) Not surprisingly, the code does not know how to load a Linux
  84.        kernel image; let alone, how to pass a command line to the
  85.        linux kernel.
  86.    (for your convenience, I copied a part of the current FreeBSD
  87.     source tree into the directory `netboot-freebsd'. Please consult
  88.     these files for copyright information; you can download the
  89.     complete FreeBSD source tree from quite a lot of FTP servers, so
  90.     please use Archie for finding the one nearest to you)
  91.  
  92. Since both Western Digital and SMC Ethernet cards are a lot more
  93. expensive then NE2000 cards (you can get the latter for as little as
  94. $10 if you do not mind buying a used one), I was looking into how to
  95. obtain a BOOT-prom for an NE2000 card. For lack of an DOS development
  96. system, I decided to go with the FreeBSD code.
  97.  
  98. In the directory `patches', you can find the changes that I had to
  99. make in order to get the package support my system. You need to apply
  100. two patches to the freebsd-code:
  101.  
  102.   patch -p0 <netboot-freebsd-compiles-with-linux.patch
  103.   patch -p0 <netboot-freebsd-loads-linux-kernel.patch
  104.  
  105. (This directory also contains a modified set of patches for patching
  106.  1.3.x kernels; as the patch file is based on the code in
  107.  `netboot-linux/lx1.2.2-patch', please consult that directory for
  108.  copyright information!)
  109.  
  110. If you rather want to try standard settings, you should have a look at
  111. the files in the directory `binaries'. I pre-compiled both *.com and
  112. *.rom files for all supported ethernet cards. All images will fit in a
  113. 16KB EPROM. I could only test the NE2000 code, but I expect that for
  114. the majority of users the other files will probably work
  115. `out-of-the-box', too. Even if you want to try these images, please
  116. read on first, so you know what to do with the files!
  117.  
  118. If you want to compile your own code, you should edit
  119. netboot-freebsd/Makefile or netboot-freebsd/Makefile.linux and make
  120. the BOOT-prom images (specify Makefile.linux as your makefile if you
  121. compile under Linux).
  122.  
  123. I never tried building BOOT-prom images in an a.out environment
  124. (neither did I try compiling under FreeBSD), but I have been told that
  125. there are some old versions of `objdump' that might cause
  126. problems. So, if you are stuck with extracting the text and data
  127. segment from the compiled binaries, you should either try to update to
  128. a newer release of `objdump' or -- preferably -- compile the code in
  129. an ELF environment.
  130.  
  131. Please note, that the BOOT-prom images still support loading FreeBSD,
  132. so if you ever decide switching from Linux to FreeBSD you do not have
  133. to burn a new EPROM.
  134.  
  135. Apart from the FreeBSD file format, the BOOT-prom auto-detects Linux
  136. kernels and `tagged files'; the latter is the format that is prefered
  137. by the netboot-linux code. If you want to use this format, you need
  138. the utilities that come with the netboot-linux package. For your
  139. convenience I copied them into the directory `netboot-linux' (please
  140. note, that I did not write any of the files in that directory, so
  141. please refer to the Copyright information that comes with those
  142. files).
  143.  
  144. After calling `make' you will have both a *.com and a *.rom file for
  145. your Ethernet card. The *.rom file is exactly 16kB long (please check,
  146. that the total size of text segment plus data segment does not exceed
  147. 16kB; the sizes are displayed during compilation) and needs to be put
  148. into the EPROM. The *.com file can be used for testing the code before
  149. burning an EPROM. You should load the *.com file from a boot-disk. I
  150. noticed that having other drivers or newer versions of DOS loaded
  151. before calling the *.com file can cause serious problems, thus I
  152. suggest you format a new DOS disk with system files (format a: /s) and
  153. then rename *.com into command.com when you copy it onto the disk (you
  154. could also specify the original name as your SHELL= in config.sys).
  155.  
  156. You will now have to setup your server to provide the necessary
  157. services for the disk-less workstation. The following instructions
  158. should get you started:
  159.  
  160. (These instructions assume, that you do *not* use the `tagged file
  161. format' that is used by the `netboot-linux' package; if you prefer to
  162. use that format instead, you might want to have a look at
  163. ftp://ftp.ix.de/pub/ix/linux/iX-Terminal)
  164.  
  165. - The server has to provide the disk-less workstation with its IP
  166.   address, which is queried using the bootp-protocol; thus you will
  167.   have to install a bootp-demon, activate it in /etc/services and
  168.   /etc/inetd.conf and supply an entry in /etc/bootptab; if you want to
  169.   change to a subdirectory before starting the bootp-demon (see
  170.   below), you will have to put the configuration file into
  171.   <subdirectory>/etc/bootptab.
  172.   (if you are on a local sub-net that is not directly connected to the
  173.   Internet, you can for instance use the IP addresses 192.168.x.y,
  174.   otherwise please ask either your network administrator or your
  175.   Internet service provider for your own IP address(es))
  176.  
  177. - The BOOT-prom code loads a configuration file from either the file
  178.   given in the BOOTP record (that is the file given in the bf= field),
  179.   or `cfg.<IP-number>', or `/tftpboot/cfg.<IP-number>'. You will have to
  180.   setup a tftp-demon for this (it has to be activated in
  181.   /etc/services and /etc/inetd.conf). Make sure the configuration files
  182.   are world-readable.
  183.   For security reasons you might want to consider, whether you can
  184.   chroot to a subdirectory before starting the tftp-demon (in this
  185.   case, the demon should probably be compiled statically and you will
  186.   have to supply a `lib' directory that contains the startup code
  187.   (such as `ld-linux.so.1'); you might also have to install
  188.   `libc.so.x') If you do change to a subdirectory for the tftp-demon,
  189.   you should do the same thing for the bootp-demon (beware! the bootp-
  190.   demon will return a filename for the kernel file, only if this file
  191.   is visible to the demon!)
  192.   The configuration file should set the host-name, the name of the
  193.   kernel image (in case you did not use bootp in order to set a kernel
  194.   file name), the path for the root file-system, and any command line
  195.   parameters that need to be passed to the kernel; I used the following
  196.   file (your mileage is likely to vary!):
  197.     hostname appendix.uni-muenster.de
  198.     kernel vmlinuz
  199.     rootfs 192.168.0.1:/usr/boot/root/appendix
  200.     linuxcmd sbpcd=0x230,SoundBlaster
  201.   Press `help' at the boot-prompt for a list of the possible
  202.   commands. Configuration files must not be longer than 512 bytes.
  203.  
  204.   If you do not supply a configuration file, you could instead have a
  205.   `tagged' kernel image loaded by TFTP; the BOOT-prom will autodetect,
  206.   whether it reads a configuration file or a `tagged' kernel image!
  207.  
  208. - After loading the configuration file, the BOOT-prom code attempts to
  209.   mount the root file system, where it looks for the kernel image (if
  210.   you used `tagged files', the kernel will be loaded by TFTP instead
  211.   of NFS!). So please configure both your mount demon and your nfs
  212.   demon properly. (You might have to restart these demons after
  213.   changing their configuration files; you could also consider sending
  214.   the inet-demon a '-HUP' signal, if you want it to reread
  215.   /etc/inetd.conf)
  216.   The BOOT-prom will then load the kernel image from the root file
  217.   system and try to auto-detect, if this is a FreeBSD or a
  218.   (compressed) Linux kernel.
  219.   If it is a Linux kernel, the root file system is unmounted, a Linux
  220.   command line is constructed and the kernel is started; if you
  221.   applied the patches in either `netboot-linux/lx1.2.2-patch' or
  222.   `patches/lx1.3.15-patch' to your kernel, the kernel will then try to
  223.   remount its root file system.
  224.  
  225. - For mounting the root file system, the kernel will probably have to
  226.   use RARP first. In order for this to be successful, your server will
  227.   have to have the appropriate RARP table entries (c.f. man rarp for
  228.   further information; putting `/sbin/rarp -s 192.168.0.3 00:00:1B:38:F9:50'
  229.   in one of my /etc/rc.d/rc... files worked for me).
  230.  
  231. - From here on, booting continues as usual.
  232.  
  233.  
  234.  
  235. Good luck and enjoy using your new disk-less workstation
  236.  
  237.  
  238. Markus (gutschk@math.uni-muenster.de)
  239.